package showgo.modell.stueck;

/**
 * Diese Klasse stellt den Redetext von Rollen und die Regieanweisungen dar.
 * Diese wurden nicht als einfache Strings gespeichert, da verschiedene
 * Operationen zu den Texten realisiert werden muessen.
 * 
 * @author lutz
 * 
 */
public class Text {

    private String text;

    public String getText() {
	return text;
    }

    public void setText(String text) {
	this.text = text;
    }

    public Text(String text) {
	super();
	this.text = text;
    }

    /**
     * Gibt die Wortzahl des Strings zurueck. Dabei wird jeder Char des Strings
     * auf gewisse Zeichen geprueft, die ein neues Wort signalisieren.
     * 
     * @return woerter
     */
    public int zaehleWoerter() {
	int woerter = 0;
	for (int i = 0; i < this.text.length(); i++) {
	    if (String.valueOf(this.text.charAt(i)).equals(" ")) {
		woerter++;
	    } else if (String.valueOf(this.text.charAt(i)).equals(",")
		    && (i + 1) < this.text.length()
		    && !String.valueOf(this.text.charAt(i)).equals(" ")) {
		woerter++;
	    } else if (String.valueOf(this.text.charAt(i)).equals(".")
		    && (i + 1) < this.text.length()
		    && !String.valueOf(this.text.charAt(i)).equals(" ")) {
		woerter++;
	    } else if (String.valueOf(this.text.charAt(i)).equals("!")
		    && (i + 1) < this.text.length()
		    && !String.valueOf(this.text.charAt(i)).equals(" ")) {
		woerter++;
	    } else if (String.valueOf(this.text.charAt(i)).equals("?")
		    && (i + 1) < this.text.length()
		    && !String.valueOf(this.text.charAt(i)).equals(" ")) {
		woerter++;
	    } else if (String.valueOf(this.text.charAt(i)).equals("-")
		    && (i + 1) < this.text.length()
		    && !String.valueOf(this.text.charAt(i)).equals(" ")) {
		woerter++;
	    } else if (String.valueOf(this.text.charAt(i)).equals(" ")) {
		woerter++;
	    }
	}
	if (woerter > 2) {
	    return woerter - 2;
	}
	return woerter;
    }

    public int zaehleSaetze() {
	int saetze = 0;
	for (int i = 0; i < this.text.length(); i++) {
	    if (String.valueOf(this.text.charAt(i)).equals(".")) {
		saetze++;
	    } else if (String.valueOf(this.text.charAt(i)).equals(";")) {
		saetze++;
	    } else if (String.valueOf(this.text.charAt(i)).equals("!")) {
		saetze++;
	    }
	}
	return saetze;
    }

    public Text tiefeKopie() {
	String neuText = new String(text);
	Text newText = new Text(neuText);
	return newText;
    }

    @Override
    public String toString() {
	return this.text;
    }
}
